CloudFormationでAurora(MySQL5.6,5.7互換)で詳細ログ出力を有効にする
こんばんわ、札幌のヨシエです。 クルマの内装掃除に使った洗剤が中々匂いがキツくて、氷点下の中を窓全開で走りました。
以前に弊社先輩のブログにて紹介しているAuroraの詳細ログをCloudwatchLogsへ出力する設定についてCloudFormationで実現することが出来たのでご紹介します。
記事の元ネタ
今回は使用したAurora(MySQL5.6/5.7互換)でDBエンジンの変更についても以前に書きましたので合わせて紹介します。
主なポイント
今回のポイントとしては以下のプロパティを追加しております。 以下の設定値をRDSクラスターへ追記することと、ParameterGroupにて出力ログ設定を変更することでCloudWatchLogsへログを出力できます。
EnableCloudwatchLogsExports: - general - error - slowquery - audit
検証前提
今回ご紹介するCloudFormationテンプレートは詳細ログ出力で監査ログ、エラーログ、一般ログ、 スロークエリログを有効にしております。
以下のようにログが出力されます。
Aurora(5.6互換) CloudFormationテンプレート公開
AWSTemplateFormatVersion: "2010-09-09" Parameters: # 配置VPCサブネット選択 DBSubnetsInVPC: Type: CommaDelimitedList Description: The list of SubnetIds, one in each AZ in the region in your Virtual Private Cloud (VPC) # DBバックアップウィンドウ設定 DBBackupWindow: Type: String Description: Daily backup window Default: 15:00-15:30 # バックアップ取得世代指定 DBBackupRetentionPeriod: Type: Number Description: Days to retend the backup Default: "7" # DBメンテナンスウィンドウ設定 DBMaintenanceWindow: Type: String Description: Weekly maintenance window Default: Tue:15:31-Tue:16:01 # RDSインスタンスタイプ指定 DBInstanceClass: Type: String Description: Database InstanceType Default: db.t2.small # RDSセキュリティグループ指定 DBSecurityGroupId: Type: String Description: SecurityGroup Id to associate to the RDS # RDSDB管理者ユーザー指定 DBMasterUser: Type: String Description: Database Master Username Default: root # RDSDB管理用パスワード指定 DBMasterPassword: Type: String Description: Database Master User's password NoEcho: True Resources: TestAurora56dbSubnetGroup: Type: AWS::RDS::DBSubnetGroup Properties: DBSubnetGroupDescription: Subnets available for the RDS DB Instance SubnetIds: Ref: DBSubnetsInVPC TestAurora56dbClusterParameterGroup: Type: AWS::RDS::DBClusterParameterGroup Properties: Family: "aurora5.6" Description: "Test-Aurora-56ClusterParameterGroup" Parameters: time_zone: "Asia/Tokyo" server_audit_logging: 1 server_audit_events : QUERY TestAurora56dbOptionGroup: Type: "AWS::RDS::OptionGroup" Properties: EngineName: "aurora" MajorEngineVersion: "5.6" OptionGroupDescription: "TestAurora56db_RDS_OptionGroup" Tags: - Key: Name Value: Test-Aurora-56db-OptionGroup TestAurora56dbInstanceParameterGroup: Type: AWS::RDS::DBParameterGroup Properties: Family: "aurora5.6" Description: "Test-Aurora-56InstanceParameterGroup" Parameters: log_output: FILE general_log: 1 slow_query_log: 1 long_query_time: 0 TestAurora56dbCluster: Type: AWS::RDS::DBCluster Properties: BackupRetentionPeriod: Ref: DBBackupRetentionPeriod DatabaseName: TestAurora56db DBClusterIdentifier: Test-Aurora-56cluster DBClusterParameterGroupName: Ref: TestAurora56dbClusterParameterGroup DBSubnetGroupName: Ref: TestAurora56dbSubnetGroup Engine: aurora MasterUsername: Ref: DBMasterUser MasterUserPassword: Ref: DBMasterPassword Port: 3306 PreferredBackupWindow: Ref: DBBackupWindow PreferredMaintenanceWindow: Ref: DBMaintenanceWindow EnableCloudwatchLogsExports: - general - error - slowquery - audit VpcSecurityGroupIds: - Ref: DBSecurityGroupId Tags: - Key: Name Value: Test-Aurora-56db-Cluster TestAurora56dbInstance: Type: "AWS::RDS::DBInstance" Properties: AutoMinorVersionUpgrade: False AvailabilityZone: ap-northeast-1a DBInstanceClass: Ref: DBInstanceClass DBInstanceIdentifier: Test-Aurora-56db DBClusterIdentifier: Ref: TestAurora56dbCluster DBSubnetGroupName: Ref: TestAurora56dbSubnetGroup Engine: aurora OptionGroupName: Ref: TestAurora56dbOptionGroup DBParameterGroupName: Ref: TestAurora56dbInstanceParameterGroup PubliclyAccessible: False Tags: - Key: Name Value: TestAurora56dbInstance
Aurora(5.7互換) CloudFormationテンプレート公開
AWSTemplateFormatVersion: "2010-09-09" Parameters: # 配置VPCサブネット選択 DBSubnetsInVPC: Type: CommaDelimitedList Description: The list of SubnetIds, one in each AZ in the region in your Virtual Private Cloud (VPC) # DBバックアップウィンドウ設定 DBBackupWindow: Type: String Description: Daily backup window Default: 15:00-15:30 # バックアップ取得世代指定 DBBackupRetentionPeriod: Type: Number Description: Days to retend the backup Default: "7" # DBメンテナンスウィンドウ設定 DBMaintenanceWindow: Type: String Description: Weekly maintenance window Default: Tue:15:31-Tue:16:01 # RDSインスタンスタイプ指定 DBInstanceClass: Type: String Description: Database InstanceType Default: db.t2.small # RDSセキュリティグループ指定 DBSecurityGroupId: Type: String Description: SecurityGroup Id to associate to the RDS # RDSDB管理者ユーザー指定 DBMasterUser: Type: String Description: Database Master Username Default: root # RDSDB管理用パスワード指定 DBMasterPassword: Type: String Description: Database Master User's password NoEcho: True Resources: TestAurora57dbSubnetGroup: Type: AWS::RDS::DBSubnetGroup Properties: DBSubnetGroupDescription: Subnets available for the RDS DB Instance SubnetIds: Ref: DBSubnetsInVPC TestAurora57dbClusterParameterGroup: Type: AWS::RDS::DBClusterParameterGroup Properties: Family: "aurora-mysql5.7" Description: "Test-Aurora-57ClusterParameterGroup" Parameters: time_zone: "Asia/Tokyo" server_audit_logging: 1 server_audit_events : QUERY TestAurora57dbOptionGroup: Type: "AWS::RDS::OptionGroup" Properties: EngineName: "aurora-mysql" MajorEngineVersion: "5.7" OptionGroupDescription: "TestAurora57db_RDS_OptionGroup" Tags: - Key: Name Value: Test-Aurora-57db-OptionGroup TestAurora57dbInstanceParameterGroup: Type: AWS::RDS::DBParameterGroup Properties: Family: "aurora-mysql5.7" Description: "Test-Aurora-57InstanceParameterGroup" Parameters: log_output: FILE general_log: 1 slow_query_log: 1 long_query_time: 0 TestAurora57dbCluster: Type: AWS::RDS::DBCluster Properties: BackupRetentionPeriod: Ref: DBBackupRetentionPeriod DatabaseName: TestAurora57db DBClusterIdentifier: Test-Aurora-57cluster DBClusterParameterGroupName: Ref: TestAurora57dbClusterParameterGroup DBSubnetGroupName: Ref: TestAurora57dbSubnetGroup Engine: aurora-mysql MasterUsername: Ref: DBMasterUser MasterUserPassword: Ref: DBMasterPassword Port: 3306 PreferredBackupWindow: Ref: DBBackupWindow PreferredMaintenanceWindow: Ref: DBMaintenanceWindow EnableCloudwatchLogsExports: - general - error - slowquery - audit VpcSecurityGroupIds: - Ref: DBSecurityGroupId Tags: - Key: Name Value: Test-Aurora-57db-Cluster TestAurora57dbInstance: Type: "AWS::RDS::DBInstance" Properties: AutoMinorVersionUpgrade: False AvailabilityZone: ap-northeast-1a DBInstanceClass: Ref: DBInstanceClass DBInstanceIdentifier: Test-Aurora-57db DBClusterIdentifier: Ref: TestAurora57dbCluster DBSubnetGroupName: Ref: TestAurora57dbSubnetGroup Engine: aurora-mysql OptionGroupName: Ref: TestAurora57dbOptionGroup DBParameterGroupName: Ref: TestAurora57dbInstanceParameterGroup PubliclyAccessible: False Tags: - Key: Name Value: TestAurora57dbInstance
終わりに
RDSの出力ログがCloudWatchLogsへの出力が発表された際は小躍りするぐらい嬉しいニュースだったのを覚えております。 しかし、発表当時はテンプレートに落とし込めませんでしたがアップデートが入ったことでCloudFormationに組み込むことが出来るようになりました。 CloudWatchLogsへのログ出力を目的としましたが、ログ保存料が増えることでコストも増えてしまいますので、 ログの保存期間はご注意ください。 ログは運用に欠かせない要素と考えておりますので、お役に立てば幸いです。